This invention relates generally to communications systems, and in particular to providing interoperability and enhanced functionality for network applications in a communications environment.
There are a multitude of different network applications that provide various services for mobile communications subscribers, including voice, data, text messaging, push-to-talk (PTT), along with many other types of services. These network applications are usually designed independently of each other and often by different entities, so they commonly use their own protocols and proprietary data formats. Because of the resulting incompatibilities, these different network applications rarely interoperate. And if they do, it is only in very limited ways. Presently, different network applications rarely interoperate unless they are specifically programmed to do so or unless there is a specific apparatus designed to allow each of the network applications to communicate in a language the other understands.
The problem also exists with network applications that provide similar services but for different service providers or on different platforms (such as CDMA or GSM). For example, one network application may implement a PTT service for one service provider while another network application implements a different PTT service for a different service provider. Because these PTT applications use different protocols and different data formats (e.g., different codecs), there is no way for them to communicate. Hence, users of one PTT service cannot communicate with users of the other PTT service.
To solve the problem of incompatibility between network applications, communications service providers have developed specialized gateways that convert between the protocols of two network applications. FIG. 1 illustrates an example of a gateway 110 that allows a network application running on one application server 120-A to interoperate with a network application running on another application server 120-B via their respective networks 140-A and 140-B. The gateway 110 receives information from a first application server 120-A in a first protocol used by that network application, and the gateway 110 then converts that information into a second protocol used by the second network application on the application server 120-B. The gateway 110 also provides the reverse conversion for communications from application server 120-B to application server 120-A. In this way, the gateway 110 emulates each network application on behalf of the other, thereby allowing the two network applications to interoperate. Clients 130-A using one network application may thus communicate with clients 130-B using a second network application, and vice versa.
But this gateway approach is not very scalable, since a new gateway must be designed for each pair of network applications to interoperate. For example, if a third network application were added to the network system shown in FIG. 1, there would have to be two new gateways specially designed—one for interoperability between the new network application and each of the existing network applications. This problem grows as network applications are added. In the general case, if there are N network applications in a system, the next (N+1)th network application would require N new gateways for interoperability with each of the existing N network applications. Accordingly, as each new network application is introduced, the number of new gateways that must be added increases, thereby increasing the complexity and cost of each new network application. Scalability thus presents a significant obstacle in the quest for interoperability among network applications in a communications environment.
Another problem of the existing communication architecture is that introducing new applications often requires modification of the network application itself, so enhancing functionality of the network applications is difficult. Typically, the application data and other content used to provide services by each network application are encoded in the application's own special format. To provide an enhanced service that uses the network application data, the provider would have to know the format and protocols used by the network application to extract the application data for any useful purpose. And even if these were known, a special enhancement application would have to be added and customized for each network application that is to have the functionality enhancement, which again presents a scalability problem similar to the one described above.
Accordingly, what is needed is an architecture for communications networks that exposes the data and content used by particular network applications so that the data and content are available for other uses, such as for use by other network applications and/or for providing functionality enhancements.